/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package tipos;

/**
 *
 * Classe que representa o domínio nome.
 * @author Daniel Saad
 **/
public class Nome {

    /**
     * constante que representa o maior número
     * de letras que um nome pode conter.
     */
    private static final int TAM_NOME = 20;
    /**
     * O método validar é responsável verificar
     * se o nome está de acordo com o domínio.
     * @param nome Corresponde ao nome a ser validado
     * @exception NullPointerException
     * @exception IllegalArgumentException
     */
   public static void validar(final String nome) {
       if (nome == null) {
           throw new NullPointerException("Nome nulo.");
       }
       if (nome.length() == 0) {
           throw new IllegalArgumentException("Nome inválido, foi informado"
                  + " um nome vazio.");
       }
       if (nome.length() > TAM_NOME) {
           throw new IllegalArgumentException("Nome inválido, maior que"
                  + " o tamanho máximo especificado.");
       }
       for (int i = 0; i < nome.length(); i++) {
           /** se não for letra ou espaço, lança exceção**/
           if (!Character.isLetter(nome.charAt(i)) && nome.charAt(i) != ' ') {
               throw new IllegalArgumentException("Nome inválido, "
                       + "não é composto apenas por letras e espaços.");
           }
       }
   }
}
